/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.tbp.persitence.dao;

import br.com.tbp.exception.PersistenciaException;
import br.com.tbp.model.domain.Consultor;
import br.com.tbp.model.domain.Empresa;
import br.com.tbp.model.domain.ItemDePedido;
import br.com.tbp.model.domain.Pedido;
import br.com.tbp.model.domain.StatusPedido;
import br.com.tbp.model.domain.constant.CondicaoDaLinha;
import java.util.Date;
import java.util.List;

/**
 *
 * @author Diego Freire
 */
public interface PedidoDao {

    public void registrar(Pedido p) throws PersistenciaException;

    public void atualizar(Pedido p) throws PersistenciaException;

    public List<Pedido> pesquisar() throws PersistenciaException;

    public Pedido pesquisar(long id) throws PersistenciaException;

    public List<Pedido> pesquisarPelaEmpresa(String nome) throws PersistenciaException;

    public List<Pedido> pesquisarPeloCnpj(String cnpj) throws PersistenciaException;

    public List<Pedido> pesquisarPelaSituacao(StatusPedido s) throws PersistenciaException;

    public List<Pedido> pesquisar(Date d1, Date d2) throws PersistenciaException;

    public List<Pedido> pesquisar(int limit_1, int limit_2) throws PersistenciaException;

    public void remover(long id) throws PersistenciaException;

    public void remover(List<Long> listaDeIds) throws PersistenciaException;

    public void removerPedidoPelaEmpresa(Empresa e) throws PersistenciaException;

    public void removerPedidoPeloConsultor(Consultor c) throws PersistenciaException;

    public void recuperaItensDePedido(Pedido p) throws PersistenciaException;

    public void recuperaSituacoesExternasDoPedido(Pedido p) throws PersistenciaException;

    public void recuperaSituacoesInternasDoPedido(Pedido p) throws PersistenciaException;

    public int buscaTotalPorCondicao(CondicaoDaLinha c, Date inicio, Date fim) throws PersistenciaException;

    public int buscaTotalPortIn(Date inicio, Date fim) throws PersistenciaException;

    public List<ItemDePedido> getAtivacoesPelaData(Date _1, Date _2) throws PersistenciaException;

    public void atualizarAtivacoes(List<ItemDePedido> itensList) throws PersistenciaException;
    
    public Pedido pesquisar(long id, Consultor consultor) throws PersistenciaException;

    public List<Pedido> pesquisarPelaEmpresa(String nome, Consultor consultor) throws PersistenciaException;

    public List<Pedido> pesquisarPeloCnpj(String cnpj, Consultor consultor) throws PersistenciaException;

    public List<Pedido> pesquisar(Date d1, Date d2, Consultor consultor) throws PersistenciaException;
    
    public List<Pedido> pesquisar(int limit_1, int limit_2, Consultor consultor) throws PersistenciaException;
}
